<?php

class PEPComponent extends Object{

	var $instances = array();
	var $components = array('Session');

	function __construct(){
		$this->instances['produto'] = ClassRegistry::init('Produto');
		$this->instances['empacotamento'] = ClassRegistry::init('Empacotamento');
		$this->instances['pacote'] = ClassRegistry::init('Pacote');
	}

	function getProdutoByEmpacotamentoId($idEmpacotamento){
		$produto = $this->instances['empacotamento']->find('all', array(
													'conditions'=>array('id_empacotamento'=>$idEmpacotamento),
													'fields'=>array('produto_id'),
													'order'=>'descricao ASC'));
		if(!empty($produto))
			return $produto[0]['Empacotamento']['produto_id'];
		else return NULL;
	}

	function getUnidadeByProdutoId($idProduto){
		$unidade = $this->instances['produto']->find('first', array('fields'=>'Unidade.unidade', 'conditions'=>array('id_produto'=>$idProduto)));
		return $unidade['Unidade']['unidade'];
	}


	function getPacotesByProdutoId($idProduto){
		$empacotamentos = $this->instances['empacotamento']->find('all', array('conditions'=>array('produto_id'=>$idProduto)));
		foreach($empacotamentos as $item){
				$aux = $this->instances['pacote']->find('all', array('conditions'=>array('empacotamento_id'=>$item['Empacotamento']['id_empacotamento']),
															'order'=>'ordem DESC'));
				if(!empty($aux))
					$pacotes[] = $aux;
		}
		if(isset($pacotes))
			return $pacotes;
		else return null;
	}
	
	function getPacoteByEmpacotamentoId($idEmpacotamento){
		return $this->instances['pacote']->find('all', array('conditions'=>array('empacotamento_id'=>$idEmpacotamento),
															'order'=>'ordem DESC'));
	}

	function getLastOrdemByEmpacotamento($idEmpacotamento){
		$ordem = $this->instances['pacote']->find('first', array(
										'conditions'=>array('empacotamento_id'=>$idEmpacotamento),
										'order'=>'ordem DESC'));
		return $ordem['Pacote']['ordem'];
	}
	
	function selectProdutos($user){
		if($this->Session->read('Auth.User.tipo_usuario') !== 'A')
			$produtos = $this->instances['produto']->find('all', array('conditions'=>array('Produto.user_id'=>$user), 'order'=>'descricao ASC'));
		else
			$produtos = $this->instances['produto']->find('all', array('order'=>'descricao ASC'));
		$return = array();
		foreach ($produtos as $item){
			$pacotes = $this->getPacotesByProdutoId($item['Produto']['id_produto']);
			if(!empty($pacotes)){
				foreach ($pacotes as $pacote){
					$descricao = $item['Produto']['descricao'].' - ';
					foreach ($pacote as $subpacote){
						$descricao .= $subpacote['Unidades']['unidade'].' c/ '.$subpacote['Pacote']['quantidade'].' ';
					}
					$return[] = array('id_empacotamento'=>$pacote[0]['Empacotamentos']['id_empacotamento'], 'descricao'=>$descricao.$item['Unidade']['unidade']);
				}
			}
		}
		return $return;
	}
	
	function getQuantidadeByEmpacotamentoId($idEmpacotamento){
		$pacotes = $this->getPacoteByEmpacotamentoId($idEmpacotamento);
		$quantidade = 1;
		foreach($pacotes as $item){
			$quantidade *= $item['Pacote']['quantidade'];
		}
		return $quantidade;
	}
}